#ifndef __INPUTMESSAGE_H
#define __INPUTMESSAGE_H

#include <string>
#include <memory>

#include "BasicTypes.h"
#include "OutputMessage.h"

class IInputMessage;
//class IOutputMessage;
class Model;

typedef std::auto_ptr<IInputMessage> pInputMessage;
typedef std::auto_ptr<IOutputMessage> POutputMessage;

class IInputMessage
{
public:
	virtual ~IInputMessage() {};
	virtual POutputMessage Process(Model * model) = 0;
	static pInputMessage Create(const MessageType type, const std::string & data);
};

#endif //__INPUTMESSAGE_H